home *** CD-ROM | disk | FTP | other *** search
/ Tech Arsenal 1 / Tech Arsenal (Arsenal Computer).ISO / tek-04 / dsiic2.zip / WINDEMO.C < prev    next >
C/C++ Source or Header  |  1991-07-15  |  5KB  |  190 lines

  1. /* Copyright (c) James L. Pinson 1990,1991  */
  2.  
  3. /**********************   WINDEMO.C  ***************************/
  4.  
  5. #include "mydef.h"   /* always include this */
  6. #include <conio.h>
  7. #include <stddef.h>  /* we need the definition of NULL from here */
  8.  
  9.  
  10. /* function prototype */
  11. void fill_win(void);  
  12.  
  13. int start(int argc, char *argv[])      /* start is the entry point */
  14. {
  15. extern struct screen_structure scr;
  16. extern struct window_structure w[];
  17.  
  18. char string[255];
  19. int i;
  20. char frame_attr, window_attr;
  21. int w1,w2,w3,message;     /* variables to hold window handles */
  22.  
  23. /* clear the screen */
  24.        cls();
  25. /* fill the screen with dots '.'*/
  26. /* make up a string of '.' wide enough to fill each row */
  27.  
  28.   /* build the string */
  29.   for(i=0;i<scr.columns;i++) string[i]='.';
  30.   string[i]= '\0';         /* terminate it*/
  31.  
  32. /* turn on alternate (virtual) screen so the printing is not seen */
  33.  
  34.   alt_screen(ON);
  35.  
  36. /* now fill each row of the screen with the string of '.' */
  37.  
  38.   for (i=1;i<=scr.rows;i++) print(1,i,string);
  39.  
  40. /* make the newly drawn screen visible */
  41.   alt_screen(OFF);
  42.  
  43. /* make window 1, and print to it */
  44.  
  45.   w1=win_make (1,1,35,6,STD_FRAME,"Window1",scr.normal,scr.normal);
  46.  
  47.   print(1,1,"This window is framed.");
  48.   print(1,2,"The frame attribute is normal.");
  49.   print(1,3,"The interior attribute is normal.");
  50.   print(1,4,"The cursor is of normal size.");
  51.   print(1,6,"TOUCH ANY KEY TO CONTINUE:");
  52.  
  53.   getch();
  54.  
  55. /* make window 2 */
  56.   w2= win_make (4,4,35,6,NO_FRAME,"",scr.normal,scr.inverse);
  57.  
  58.   cursor(BIG_CURSOR);  /* set the cursor to large */
  59.  
  60.   print(1,1,"This window is unframed.");
  61.   print(1,3,"The interior attribute is inverse.");
  62.   print(1,4,"The cursor is of large size.");
  63.   print(1,6,"TOUCH ANY KEY TO CONTINUE:");
  64.  
  65.   getch();
  66.  
  67. /* make window 3 */
  68.   w3=win_make (8,8,40,9,STD_FRAME,"Window3",scr.normal,scr.normal);
  69.  
  70.   cursor(NO_CURSOR);  /* hide the cursor */
  71.  
  72. /* demonstrate the use of attributes */
  73.  
  74.   print(1,1," Here are the predefined text attributes:");
  75.   scr.current=scr.normal;
  76.    print(1,2,"NORMAL");
  77.   scr.current=set_intense(scr.current);
  78.    print(1,3,"intense");
  79.   scr.current=scr.inverse;
  80.    print(1,4,"INVERSE");
  81.   scr.current=scr.normal;
  82.  
  83. /* demonstrate bold caps */
  84.  
  85.   scr.bold_caps=TRUE;  /* set bold caps flag */
  86.    print(1,5,"Demo of Bold Caps.");
  87.   scr.bold_caps=FALSE; /* turn off flag */
  88.  
  89.   print(1,7,"The cursor is hidden.");
  90.   print(1,9,"TOUCH ANY KEY TO CONTINUE:");
  91.  
  92.     getch();
  93.  
  94.  
  95. /* make a message window */
  96. /* if color mode, set color attributes */
  97.  
  98.   if(scr.mode==COLOR_80){
  99.     window_attr=set_color(WHITE,BLUE);
  100.     frame_attr=set_color(YELLOW,BLACK);
  101.   }
  102.    else {    /* if not color then use predefined attributes */
  103.     frame_attr= scr.normal;
  104.     window_attr=scr.normal;
  105.    }
  106.  
  107.   message=win_make (10,20,47,5,STD_FRAME," message window",
  108.                     frame_attr,window_attr);
  109.  
  110.   print(1,1,"Touch a key several times ");
  111.   print(1,2,"to pop windows 1-3 to the top.");
  112.   print(1,3,"The correct cursor appears for each window");
  113.   print(1,5,"TOUCH ANY KEY TO CONTINUE:");
  114.  
  115.   getch();
  116.  
  117. /* now pop the windows to the top, one by one */
  118.  
  119.   win_pop_top(w1);   /* pop window one to the top */
  120.    getch();
  121.   win_pop_top(w2);   /* pop window two */
  122.    getch();
  123.   win_pop_top(w3);   /* pop window three */
  124.  
  125. /* pop the message window */
  126.   win_pop_top(message);
  127.  
  128.   /* get the window attribute */
  129.   scr.current=win_what_attr(message);
  130.    cls();
  131.   print(1,1,"Touch any key to see window movement");
  132.    getch();
  133.  
  134. /* now move window 2 around the screen */
  135.  
  136.   for(i=0;i<4;i++) win_up(w2,1);    /* move it up */
  137.   win_insert(w2,3);                 /* insert at level 3 */
  138.   for(i=0;i<17;i++) win_down(w2,1); /* move it down */
  139.      win_insert(w2,2);              /* move it to level 2 */
  140.   for(i=0;i<14;i++) win_up(w2,1);   /* move it up */
  141.  
  142.  
  143. /* give a demonstration of clearing and writing to overlapped
  144. windows */
  145.  
  146.   cls();
  147.   print(1,1,"Touch any key to see the windows cleared");
  148.   print(1,2,"and new text written");
  149.    getch();
  150.  
  151. /* do window 1 */
  152. /* we will not do a win_redraw_all() until all the window are done */
  153.  
  154.   win_cls(w1);                    /* clear window 1 */
  155.   scr.current=win_what_attr(w1);  /* get the attribute */
  156.   win_print(w1,1,1,"Window 1");   /* print with the correct attribute
  157.                                      for window 1 */
  158.  
  159. /* do window 2 */
  160.  
  161.   win_cls(w2);                    /* clear window 2*/
  162.   scr.current=win_what_attr(w2);  /* get the attribute */
  163.   win_print(w2,1,1,"Window 2");   /* print */
  164.  
  165.  
  166. /* do window 3 */
  167.  
  168.   win_cls(w3);                    /* clear window 3 */
  169.   scr.current=win_what_attr(w3);  /* get the attribute */
  170.   win_print(w3,1,1,"Window 3");   /* print */
  171.  
  172.  
  173. /* now that all the virtual windows have been updated,
  174.    we will display the changes */
  175.  
  176.   win_redraw_all();
  177.  
  178. /* note: the active window is still the message window */
  179.  
  180.   cls();
  181.   /* get attribute for window */
  182.   scr.current =win_what_attr(message);
  183.  
  184.   print(1,1,"Touch any key to delete the windows");
  185.    getch();
  186.   for(i=0;i<4;i++) win_delete_top(); /* delete the window */
  187.  
  188. return(0);
  189. }
  190.